package study;

import java.nio.ByteBuffer;

/**
 * Created by yunqisong on 2017/08/31.
 */
public class SBytebuffer {

    /**
     * 我们可以把bytebuffer理解成如下几个成员组成的一个新对象，(基本类似于String String装的是char 他装的是byte)
     * 对，就是一个普通的java对象，像string一样的java对象。
     * 强调一下，这里只是说这样理解，实际上有些bytebuffer的实现类并非这样实现，
     * 并且这里只列出掌握bytebuffer所需要的最小知识集合，其它诸如mark等字段本文并不介绍，以免增加初学者的惑度
     *
     *  1. byte[] bytes: 用来存储数据
     *  2. int capacity: 用来表示bytes的容量，那么可以想像capacity就等于bytes.size()，此值在初始化bytes后，是不可变的。
     *  3. int limit: 用来表示bytes实际装了多少数据，可以容易想像得到limit <= capacity，此值是可灵活变动的
     *  4. int position: 用来表示在哪个位置开始往bytes写数据或是读数据，此值是可灵活变动的
     * */

    public static void main(String args[]){
        // 创建一个初始容量为 6 的 ByteBuffer
        ByteBuffer byteBuffer = ByteBuffer.allocate(6);
        byteBuffer.put((byte) 3);   // 写入一个字节


        byteBuffer.position(0);  //设置position到0位置，这样读数据时就从这个位置开始读
        byteBuffer.limit(1);     //设置limit为1，表示当前bytebuffer的有效数据长度是1

        byte b = byteBuffer.get();  // 读出一个字节

        System.out.println(b);

        System.out.println(byteBuffer);
    }

}
